Prior file systems for flash memories have used a multi-level paging structure to convert logical addresses to physical memory addresses. Each level in the structure corresponds to predetermined bit positions in the logical address space. For example, the root page, which is usually kept in the working random access memory, may contain entries corresponding to the first eight bits of the logical addresses. These entries contain pointers to pages in the second level, each of which contains entries corresponding to the second set of eight bits. The latter entries, in turn, point to pages in the third level, whose entries point to the physical memory locations. The second and third level pages are kept in the flash memory and retrieved as need when locations in the memory are to be accessed.